//
//  TTRTCProtocol.swift
//  TTLive
//
//  Created by Toj on 1/27/21.
//

import Foundation

// 声网流类型
public enum TTVideoStreamType: Int {
    case high // 大流
    case low  // 小流
}
public typealias TTUInt = UInt

public protocol TTRTCProtocol: NSObjectProtocol {
    
    var arcType: Int { get }
    
    // 加入频道/房间
    func joinLiveRoom(userID: TTUInt, roomID: String, local view: TTView)
    
    // 主动拉取远端音视频
    func pullRemoteVideo(uid: TTUInt, remote view: TTView)
    
    // 切换房间
    func switchStream(uid new: TTUInt, remote view: TTView)
    
    // 退出房间
    func quitLiveRoom(complete quitBlock: TTRTCQuitLiveRoom?)
    
    // 切换视频分辨率(大流/小流)
    func switchRemoteVideoStream(uid: TTUInt, type: TTVideoStreamType)
    
    // 本地视频采集 (NO:关闭/ YES:开启)
    func localVideo(enabled: Bool)
    
    // 本地视频推流 (NO:打开/ YES:关闭)
    func pushLocalVideoStream(muted: Bool)
    // 本地音频推流 (NO:打开/ YES:关闭)
    func pushLocalAudioStream(muted: Bool)

    // 远端视频拉流个人 (NO:打开/ YES:关闭)
    func pullRemoteVideoStream(uid:TTUInt, muted: Bool)
    // 远端音频拉流个人 (NO:打开/ YES:关闭)
    func pullRemoteAudioStream(uid:TTUInt, muted: Bool)
    
    // 远端视频拉流全部 (NO:打开/ YES:关闭)
    func pullRemoteVideoStreamAll(muted: Bool)
    // 远端音频拉流全部 (NO:打开/ YES:关闭)
    func pullRemoteAudioStreamAll(muted: Bool)
    
    // 设置美颜效果选项
    func beautyEffect(enable: Bool)

    // iPhone
    #if canImport(UIKit)
    // 切换前置摄像头
    func switchCamera()
    #endif

    #if canImport(Cocoa)
    // 屏幕共享
    // 全屏
    func sharedFullScreen() -> Int32
    // 指定窗口
    func sharedScreenWindowId(windowId: TTUInt, size: CGSize) -> Int32
    // 指定屏幕
    func sharedScreenDisplayId(displayId: TTUInt, size: CGSize) -> Int32
    // 停止共享
    func stopScreenCapture() -> Int32
    #endif
    
    func destroyRTC()
    
    func sdkVersion() -> String
}

extension TTRTCProtocol {
    
}
